package rpcx_connect_centre

/* 接入中心控制接口 */

// AllPushStreamsParam 推流列表上报
type AllPushStreamsParam struct {
	ConnCentreID       string            //接入中心ID
	TID                string            //事务ID
	PushStreamInfoList []*PushStreamInfo //推流列表
}

type PushStreamInfo struct {
	PlayMode    uint8           //推流方式:1_实时流 2_历史流 3_停止推流
	ChannelID   int64           //通道号
	StartTime   int64           //PlayMode=2 需要赋值 历史流开始时间
	EndTime     int64           //PlayMode=2 需要赋值 历史流结束时间
	ParentSipID string          //父级设备ID
	SSRC        string          //SSRC
	AppID       string          //应用ID 企标默认赋值为 "rtp"
	StreamID    string          //流ID StreamID
	MediaCenter MediaCentreInfo //媒体中心的IP、Port
}

// HeartBeatInfo 心跳检测
type HeartBeatInfo struct {
	ConnectCentreID string //接入中心ID
	PING            int64  //PING
	PONG            int64  //PONG
}

// DccAllDeviceInfo 接入中心获取所以设备信息
type DccAllDeviceInfo struct {
	ConnectCentreID string //接入中心ID
	TID             string //事务ID
}

// ConnectCentreConfig 接入中心配置
type ConnectCentreConfig struct {
	CommonResponse           //响应
	ConnectCentreID   string //接入中心ID
	ConnectCentreIP   string //接入中心IP
	ConnectCentrePort int64  //接入中心端口
	City              string //城市
}

/* 设备信息上报 */

// DeviceStatusReport 设备状态上报信息
type DeviceStatusReport struct {
	ConnCentreID     string
	TID              string
	DeviceStatusList []*DeviceStatusInfo
}

// DeviceStatusInfo 设备状态信息
type DeviceStatusInfo struct {
	DeviceInfo   //调阅设备信息
	ConnCenterID string
	IsOnline     bool   //是否在线
	FaultDesc    string //故障描述
}

// DeviceExistQueryParam DeviceExistQuery 设备注册查询
type DeviceExistQueryParam struct {
	ConnCentreID string
	TID          string
	DeviceSipIDs []DeviceInfo
}

//// DeviceConnectInfo 设备接入信息
//type DeviceConnectInfo struct {
//	DeviceInfo
//	RtspUrl           string //视频推流的RTSP Url
//	DeviceIP          string //IP地址
//	DevicePort        int64  //连接端口
//	UserName          string //用户名
//	UserPassword      string //密码
//	BrandType         uint8  //设备品牌
//	QB_StreamType     uint8  //0-主码流，1-子码流，2-3码流，3-虚拟码流4，以此类推
//	QB_LinkMode       uint8  //1-TCP方式，2-UDP方式
//	QB_ProtoType      uint8  //取流协议: 1- RTSP协议 ,3- RTP方式，4-RTP/RTSP，5-RTSP/HTTP ,6-RTMP/HTTP
//	IpcType           uint8  //1_nvr 2_ipc 3_枪机 4_球机 5_全景相机 6_移动监拍 7_无人机 8_机器人 9_手机APP 10_智能报警设备
//	DeviceName        string //设备名称
//	ConnectSolutionID string //接入方案ID  // GB_20000=大师专业
//}

// DeviceLoginInfo  设备接入信息
type DeviceLoginInfo struct {
	Tid          string `json:"tid"`
	NvrDeviceID  string `json:"nvrDeviceID"`
	NvrChannelID int64  `json:"nvrChannelID"`
	DeviceSipID  string `json:"deviceSipID"`
	LoginType    int64  `json:"loginType"`
	DeviceIP     string `json:"deviceIP"`
	DevicePort   int64  `json:"devicePort"`
	UserName     string `json:"userName"`
	UserPassword string `json:"userPassword"`
}

// DeviceExistResponse 设备是否存在 返回值
type DeviceExistResponse struct {
	CommonResponse
	DeviceExistInfoList []DeviceExistInfo
}

type DeviceExistInfo struct {
	IsExist bool //是否存在

	NvrDeviceID  string //Nvr ID
	NvrChannelID int64  //Nvr 通道ID
	DeviceSipID  string //摄像头ID

	DeviceName        string //设备名称
	DeviceIP          string //IP地址
	DevicePort        int64  //连接端口
	UserName          string //用户名
	UserPassword      string //密码
	BrandType         uint8  //设备品牌
	ConnectSolutionID string //接入方案ID //GB_20000=大师专业

	SubscribeList []SubscribeParam //此设备订阅列表（空 = 没有订阅）
}

//type DeviceExistInfo struct {
//	IsExist           bool //是否存在
//	DeviceSipID       string
//	DeviceConnectInfo                   //设备接入信息
//
//}

// SipHistoryFileListReport 历史文件上报列表【国标】
type SipHistoryFileListReport struct {
	ConnectCentreID   string               //接入中心ID
	DeviceSipID       string               //设备ID
	DeviceHistoryList []*DeviceHistoryInfo //历史文件列表
}

// ImmediateReportParam 接入中心立即上报消息【非国标】
type ImmediateReportParam struct {
	ConnectCentreID string //接入中心ID
	DeviceSipID     string //设备ID
	ReportInfo      string //上报信息
	TID             string //任务ID
}

// ConnCenterData 接入中心上报数据
type ConnCenterData struct {
	CommonResponse //response专用,作为请求时为空
	SumNum         int64
	Page           int64
	ConnCentreID   string //接入中心ID
	Data           []byte //序列化后的数据（接入中心自行处理）
}

// UploadDeviceInfo 接入中心上报设备信息
type UploadDeviceInfo struct {
	DeviceID           string
	ChannelID          int64
	ParentDeviceID     string
	ParentChannelID    int64
	DeviceName         string
	DeviceCity         string
	DccID              string
	IpcType            uint8
	IsOnline           bool
	AccessSolution     string
	IsPullStreamDevice bool
}

type DeviceInfoReport struct {
	ConnCentreID string
	TID          string
	DeviceList   []*UploadDeviceInfo
}

type GPSUpdateData struct {
	ConnCentreID string
	TID          string
	DeviceInfo
	Longitude string //经度
	Latitude  string //纬度
	UpTime    int64  //上报时间
}
